# -*- coding: Latin-1 -*-
#!/usr/bin/env python
'''
Created on 12/01/2012

@author: nmedina
'''
import Funciones
import Seguridad
import WebServices
import Excepciones.Genericas
import types
import wx
class BuscarEmpleado(Funciones.Fn.Paginacion):
    def __init__(self,mSeguridad):
        Funciones.Fn.Paginacion.__init__(self)
        self.__security = Seguridad.seguridadstock.Manejador()
        self.__security = mSeguridad
        self.__EmpleadosResultado = {}
        self.__NroLegajo = -1
        self.__NombreSector = ""
        self.__NombreEmpleado = ""
        self.setPageSize(10)
        self.setPaginaActual(1)
    def getNroLegajo(self):
        return self.__NroLegajo
    def getNombreSector(self):
        return self.__NombreSector
    def getNombreEmpleado(self):
        return self.__NombreEmpleado
    def setNroLegajo(self, value):
        try:
            if value != "":
                value = int(value)
            else:
                value = -1
            self.__NroLegajo = value
        except:
            raise Excepciones.Genericas.Generico_Parametros_Incorrectos(
                  "BuscarEmpleado"
                  , "setNroLegajo"
                  , "NroLegajo Parametro incorrecto: se esperaba parametro del tipo entero")
    def setNombreSector(self, value):
        self.__NombreSector = value
    def setNombreEmpleado(self, value):
        self.__NombreEmpleado = value
    def Setear(self):
        self.__EmpleadosResultado = {}
        self.__NroLegajo = -1
        self.__NombreSector = ""
        self.__NombreEmpleado = ""
    def __BuscarEmpleados(self):
        self.__EmpleadosResultado.clear()
        
        buscar = True
        WebService = WebServices.soap.WebService(
                    self.__security.getUrlServidorWeb()
                    , self.__security.getHostServidorWeb()
                    , self.__security.getProxy()
                    , self.__security.getTipoServidor()
                    ,self.__security.getReintentos())                         
        Parametros = {1:("NroLegajo",str(self.getNroLegajo()))
                        ,2:("Nombre",str(self.getNombreEmpleado()))
                        ,3:("Dependencia",str(self.getNombreSector()))
                        ,4:("PageSize",str(self.getPageSize()))
                        ,5:("PageNumber",str(self.getPaginaActual()))
                        ,6:("TipoRespuesta","Python")}
        
        if WebService.Enviar("SELECT_BusquedaEmpledos_Paginada"
                            , "www.osplad.org.ar", Parametros)== True:
            if WebService.Count()!= 0 :
                while WebService.BOF()==False and WebService.EOF()==False:
                    if buscar == True:
                        self.setCantRegistros(int(WebService.Fields("CantRegistros")))
                        buscar = False
                    lresultado = EmpleadosResultado()
                    lresultado.setId(int(WebService.Fields("ID")))
                    lresultado.setIdDependencia(WebService.Fields("Id_Dependencia"))
                    lresultado.setNroLegajo(WebService.Fields("NroLegajo")) 
                    lresultado.setNombreApellido(WebService.Fields("Nombre"))
                    lresultado.setTipoDependencia(WebService.Fields("TipoDependencia"))
                    lresultado.setNombreDependencia(WebService.Fields("NombreDependencia")) 
                    self.__EmpleadosResultado[lresultado.getId()] = lresultado
                    WebService.MoveNext()
                return True
            else:
                raise Excepciones.Genericas.Consulta_Sin_Resultados(
                            "BuscarEmpleados"
                            , "__Buscar"
                            , "No se encotraron empleados")
    def getResultado(self):
        mresultado = {}
        lresultado = EmpleadosResultado()
        for key in self.__EmpleadosResultado:
           lresultado = self.__EmpleadosResultado[key]
           mresultado[key]= (lresultado.getNroLegajo(),lresultado.getNombreApellido()
                             ,lresultado.getTipoDependencia(),lresultado.getNombreDependencia()
                             )
        return mresultado
    def getEmpleado(self,mId):
        if self.__EmpleadosResultado.has_key(mId)== True:
            return self.__EmpleadosResultado[mId]
        else:
            raise Excepciones.Genericas.Generico_Parametros_Incorrectos(
                    ""
                    , ""
                    , "no se encontro el id del empleado")
    def Buscar(self):
        self.setPaginaActual(1)
        if self.__BuscarEmpleados()== True:
            return self.getResultado()
        else:
            return False

    def BuscarPaginaSiguiente(self):
        if self.PuedeIrAPaginaSiguiente()== True:
            self.IrPaginaSiguiente()
            if self.__BuscarEmpleados()== True:
                return self.getResultado()
            else:
                return False
    def BuscarPaginaAnterior(self):
        if self.PuedeIrAPaginaAnterior()== True:
            self.IrPaginaAnterior()
            if self.__BuscarEmpleados()== True:
                return self.getResultado()
            else:
                return False
            
class EmpleadosResultado():
    def __init__(self):
        self.__Id = -1
        self.__IdDependencia = -1
        self.__NroLegajo = -1
        self.__NombreApellido = ""
        self.__TipoDependencia = ""
        self.__NombreDependencia = ""
    def getId(self):
        return self.__Id
    def getIdDependencia(self):
        return self.__IdDependencia
    def getNroLegajo(self):
        return self.__NroLegajo
    def getNombreApellido(self):
        return self.__NombreApellido
    def getTipoDependencia(self):
        return self.__TipoDependencia
    def getNombreDependencia(self):
        return self.__NombreDependencia
    def setId(self, value):
        self.__Id = value
    def setIdDependencia(self, value):
        self.__IdDependencia = value
    def setNroLegajo(self, value):
        self.__NroLegajo = value
    def setNombreApellido(self, value):
        self.__NombreApellido = value
    def setTipoDependencia(self, value):
        self.__TipoDependencia = value
    def setNombreDependencia(self, value):
        self.__NombreDependencia = value

class DependenciaResultado():
    def __init__(self,mid = -1
                 ,mtipo = "",mnombre = ""
                 ,mprovincia = ""):
        self.__Id = mid
        self.__Tipo = mtipo
        self.__Nombre = mnombre
        self.__Provincia = mprovincia
    def getId(self):
        return self.__Id
    def getTipo(self):
        return self.__Tipo
    def getNombre(self):
        return self.__Nombre
    def getProvincia(self):
        return self.__Provincia
    def setId(self, value):
        self.__Id = value
    def setTipo(self, value):
        self.__Tipo = value
    def setNombre(self, value):
        self.__Nombre = value
    def setProvincia(self, value):
        self.__Provincia = value


class BuscarDependencia(Funciones.Fn.Paginacion):
    def __init__(self,mSeguridad):
        Funciones.Fn.Paginacion.__init__(self)
        self.__security = Seguridad.seguridadstock.Manejador()
        self.__security = mSeguridad
        self.__DependenciasResultado = {}
        self.__IdProvincia = -1
        self.__Nombre = ""
        self.setPageSize(10)
        self.setPaginaActual(1)
    def getIdProvincia(self):
        return self.__IdProvincia
    def getNombre(self):
        return self.__Nombre
    def setIdProvincia(self, value):
        self.__IdProvincia = value
    def setNombre(self, value):
        self.__Nombre = value
    def Setear(self):
        self.__DependenciasResultado = {}
        self.__IdProvincia = -1
        self.__Nombre = ""
    def __BuscarDependencias(self):
        self.__DependenciasResultado.clear()
        
        buscar = True
        WebService = WebServices.soap.WebService(
                    self.__security.getUrlServidorWeb()
                    , self.__security.getHostServidorWeb()
                    , self.__security.getProxy()
                    , self.__security.getTipoServidor()
                    ,self.__security.getReintentos())                         
        Parametros = {1:("IdProvincia",str(self.getIdProvincia()))
                        ,2:("Nombre",str(self.getNombre()))
                        ,3:("PageNumber",str(self.getPaginaActual()))
                        ,4:("PageSize",str(self.getPageSize()))
                        ,5:("TipoRespuesta","Python")}
        
        if WebService.Enviar("SELECT_BuscarDependenciaGenerica_Paginada"
                            , "www.osplad.org.ar", Parametros)== True:
            if WebService.Count()!= 0 :
                while WebService.BOF()==False and WebService.EOF()==False:
                    if buscar == True:
                        self.setCantRegistros(int(WebService.Fields("CantRegistros")))
                        buscar = False
                    lresultado = DependenciaResultado()
                    lresultado.setId(WebService.Fields("IdDependencia"))
                    lresultado.setNombre(WebService.Fields("Nombre"))
                    lresultado.setTipo(WebService.Fields("Tipo")) 
                    lresultado.setProvincia(WebService.Fields("Provincia"))
                    self.__DependenciasResultado[lresultado.getId()] = lresultado
                    WebService.MoveNext()
                return True
            else:
                raise Excepciones.Genericas.Consulta_Sin_Resultados(
                            "BuscarDependencias"
                            , "__Buscar"
                            , "No se encotraron empleados")
    def getResultado(self):
        mresultado = {}
        lresultado = DependenciaResultado()
        for key in self.__DependenciasResultado:
           lresultado = self.__DependenciasResultado[key]
           mresultado[key]= (lresultado.getTipo(),lresultado.getNombre()
                             ,lresultado.getProvincia()
                             )
        return mresultado
    def getDependencia(self,mId):
        if self.__DependenciasResultado.has_key(mId)== True:
            return self.__DependenciasResultado[mId]
        else:
            raise Excepciones.Genericas.Generico_Parametros_Incorrectos(
                    ""
                    , ""
                    , "no se encontro el id del empleado")
    def Buscar(self):
        self.setPaginaActual(1)
        if self.__BuscarDependencias()== True:
            return self.getResultado()
        else:
            return False

    def BuscarPaginaSiguiente(self):
        if self.PuedeIrAPaginaSiguiente()== True:
            self.IrPaginaSiguiente()
            if self.__BuscarDependencias()== True:
                return self.getResultado()
            else:
                return False
    def BuscarPaginaAnterior(self):
        if self.PuedeIrAPaginaAnterior()== True:
            self.IrPaginaAnterior()
            if self.__BuscarDependencias()== True:
                return self.getResultado()
            else:
                return False
            
class PedidosResultado():
    def __init__(self,mid = -1
                 ,mdependencia = ""
                 ,mprovincia = ""
                 ,msolicitante = "",mprioridad = -1
                 ,midestado=-1,mmestado = "",mfecha = ""
                 ):
        self.__Id = mid
        self.__NombreSolicitante = msolicitante
        self.__Dependencia = mdependencia
        self.__Provincia = ""
        self.__Prioridad = -1
        self.__IdEstado = -1
        self.__Estado = ""
        self.__Fecha = mfecha
    def getId(self):
        return self.__Id
    def getNombreSolicitante(self):
        return self.__NombreSolicitante
    def getDependencia(self):
        return self.__Dependencia
    def getProvincia(self):
        return self.__Provincia
    def getPrioridad(self):
        return self.__Prioridad
    def getIdEstado(self):
        return self.__IdEstado
    def getEstado(self):
        return self.__Estado
    def getFecha(self):
        return self.__Fecha
    def setId(self, value):
        self.__Id = value
    def setNombreSolicitante(self, value):
        self.__NombreSolicitante = value
    def setDependencia(self, value):
        self.__Dependencia = value
    def setProvincia(self, value):
        self.__Provincia = value
    def setPrioridad(self, value):
        self.__Prioridad = value
    def setIdEstado(self, value):
        self.__IdEstado = value
    def setEstado(self, value):
        self.__Estado = value
    def setFecha(self, value):
        self.__Fecha = value

class BuscarPedidos(Funciones.Fn.Paginacion):
    def __init__(self,mSeguridad):
        Funciones.Fn.Paginacion.__init__(self)
        self.__security = Seguridad.seguridadstock.Manejador()
        self.__security = mSeguridad
        self.__PedidosResultado = {}
        self.__NroPedido = -1
        self.__IdDependencia = -1
        self.__Dependencia = ""
        self.__IdEstado = ""
        self.__FechaDesde = ""
        self.__FechaHasta = ""
        self.__IdPrioridad = -1
        self.setPageSize(10)
        self.setPaginaActual(1)
    def getNroPedido(self):
        return self.__NroPedido  
    def getIdDependencia(self):
        return self.__IdDependencia
    def getDependencia(self):
        return self.__Dependencia
    def getIdEstado(self):
        return self.__IdEstado
    def getFechaDesde(self):
        return self.__FechaDesde
    def getFechaHasta(self):
        return self.__FechaHasta
    def getIdPrioridad(self):
        return self.__IdPrioridad
    def setNroPedido(self,value):
        self.__NroPedido = value
    def setIdDependencia(self, value):
        self.__IdDependencia = value
    def setDependencia(self, value):
        self.__Dependencia = value
    def setIdEstado(self, value):
        self.__IdEstado = value
    def setFechaDesde(self, value):
        self.__FechaDesde = value
    def setFechaHasta(self, value):
        self.__FechaHasta = value
    def setIdPrioridad(self, value):
        self.__IdPrioridad = value
    def getIdProvincia(self):
        return self.__IdProvincia
    def getNombre(self):
        return self.__Nombre
    def setIdProvincia(self, value):
        self.__IdProvincia = value
    def setNombre(self, value):
        self.__Nombre = value
    def LimpiarBusqueda(self):
        self.__PedidosResultado = {}
        self.__NroPedido = 0
        self.__IdDependencia = 0
        self.__Dependencia = ""
        self.__IdEstado = 0
        self.__FechaDesde = ""
        self.__FechaHasta = ""
        self.__IdPrioridad = 0
    def __BuscarPedidos(self):
        self.__PedidosResultado.clear()
        buscar = True
        WebService = WebServices.soap.WebService(
                    self.__security.getUrlServidorWeb()
                    , self.__security.getHostServidorWeb()
                    , self.__security.getProxy()
                    , self.__security.getTipoServidor()
                    ,self.__security.getReintentos())                         
        Parametros = {1:("IdGrupoStock",str(self.__security.getPerfilActual()))
                        ,2:("IdDependencia",str(self.getIdDependencia()))
                        ,3:("NroPedido",str(self.getNroPedido()))
                        ,4:("ID_Prioridad",str(self.getIdPrioridad()))
                        ,5:("ID_EstadoPedido",str(self.getIdEstado()))
                        ,6:("FechaDesde",str(self.getFechaDesde()))
                        ,7:("FechaHasta",str(self.getFechaHasta()))
                        ,8:("PageNumber",str(self.getPaginaActual()))
                        ,9:("PageSize",str(self.getPageSize()))
                        ,10:("TipoRespuesta","Python")}
        
        if WebService.Enviar("SELECT_BusquedaPedidos_Paginada"
                            , "www.osplad.org.ar", Parametros)== True:
            if WebService.Count()!= 0 :
                while WebService.BOF()==False and WebService.EOF()==False:
                    if buscar == True:
                        self.setCantRegistros(int(WebService.Fields("CantRegistros")))
                        buscar = False
                    lresultado = PedidosResultado()
                    lresultado.setId(WebService.Fields("NroPedido"))
                    lresultado.setDependencia(WebService.Fields("Dependencia"))
                    lresultado.setNombreSolicitante(WebService.Fields("Nombre"))
                    lresultado.setPrioridad(WebService.Fields("PrioridadDelPedido"))
                    lresultado.setEstado(WebService.Fields("EstadoDelPedido"))
                    lresultado.setFecha(WebService.Fields("Fecha"))
                    lresultado.setIdEstado(WebService.Fields("IdEstadoPedido"))
                    self.__PedidosResultado[lresultado.getId()] = lresultado
                    WebService.MoveNext()
                return True
            else:
                raise Excepciones.Genericas.Consulta_Sin_Resultados(
                            "BuscarDependencias"
                            , "__Buscar"
                            , "No se encotraron pedidos")
    def getResultado(self):
        mresultado = {}
        lresultado =PedidosResultado()
        for key in self.__PedidosResultado:
           lresultado = self.__PedidosResultado[key]
           mresultado[key]= (lresultado.getId(),lresultado.getDependencia()
                             ,lresultado.getNombreSolicitante(),lresultado.getFecha()
                             ,lresultado.getEstado()
                             )
        return mresultado
    def getPedido(self,mId):
        if self.__PedidosResultado.has_key(mId)== True:
            return self.__PedidosResultado[mId]
        else:
            raise Excepciones.Genericas.Generico_Parametros_Incorrectos(
                    ""
                    , ""
                    , "no se encontro el id del empleado")
    def Buscar(self):
        self.setPaginaActual(1)
        if self.__BuscarPedidos()== True:
            return self.getResultado()
        else:
            return False

    def BuscarPaginaSiguiente(self):
        if self.PuedeIrAPaginaSiguiente()== True:
            self.IrPaginaSiguiente()
            if self.__BuscarPedidos()== True:
                return self.getResultado()
            else:
                return False
    def BuscarPaginaAnterior(self):
        if self.PuedeIrAPaginaAnterior()== True:
            self.IrPaginaAnterior()
            if self.__BuscarPedidos()== True:
                return self.getResultado()
            else:
                return False
